local skynet = require "skynet"
local filelog = require "filelog"
local msghelper = require "tablehelper"
local serverbase = require "serverbase"
local base = require "base"
local tableobj = require "object.tableobj"
local table = table

local params = ...

local Table = serverbase:new({
	table_data = tableobj:new({
		cur_watch_playernum = 0, --当前旁观人数
		--添加桌子的变量
		delete_table_timer_id = -1,
		disband_table_timer_id = -1, --解散倒计时
		retain_to_time = 0,    --桌子保留到的时间(linux时间擢)
		retain_to_num = 0,     --游戏总共能进行的局数
		curr_to_num = 0,       --当前已经打了的局数
		one_start_time = 0,    --单局开局时间
		terminal_time = 0,     --记录当前游戏场结束时间

		action_player_list = nil, --记录当前可以操作的玩家和其可以进行的操作
		--[[
			rid = {
				rid = 0,
				roomsvr_seat_index = 0,    当前操作玩家的座位号
				action_to_time = 0,       当前操作玩家的到期时间
				action_types = {
					
				},         玩家可以执行的操作类型

				action_state = 0, 操作状态 0表示为操作 1表示接收操作未处理 2表示已处理
				action_type = 0,
			}
		]]

		--庄家位置
		banker_seat_index = 0,     --当前庄家位置
		last_banker_seat_index = 0, --上一个庄家位置
		
		--表示游戏是否第一局
		iswilldelete = 0, 	   --在游戏中如果收到删除指令,则置1,游戏结束再处理
		backofconf = nil,      --缓存更新的配置文件
		cards_stack = nil,     --当前牌堆 
		gamerecords = nil,     --游戏战绩
		is_had_start = false,  --是否已经开局
		playerdisbandlist = nil,
		applydisband_seat_index = 0,
		apply_disband_time = 0,
		curr_actionplayer_rid = 0,
		curr_actionplayer_cards = nil, --记录当前操作牌
		card_review_recoard = nil, --牌局回顾记录
		is_onegameend = false,
		pointcountcfg = nil,
	}),

	logicmng = require("logicmng")
})

function Table:tostring()
	return "Table"
end

local function table_to_sring()
	return Table:tostring()
end

function Table:init()
	msghelper:init(Table)
	self.eventmng.init(Table)
	self.eventmng.add_eventbyname("cmd", "tablecmd")
	self.eventmng.add_eventbyname("request", "tablerequest")
	self.eventmng.add_eventbyname("notice", "tablenotice")
	self.eventmng.add_eventbyname("timer", "tabletimer")
	Table.__tostring = table_to_sring

	self.logicmng.add_logic("roomtablelogic")
	self.logicmng.add_logic("roomseatlogic")
	self.logicmng.add_logic("gamelogic")
	self.logicmng.add_logic("fndcoingamelogic")
	self.logicmng.add_logic("fndcardgamelogic")
end 

skynet.start(function()  
	if params == nil then
		Table:start()
	else		
		Table:start(table.unpack(base.strsplit(params, ",")))
	end	
end)